DMS执行数据变更任务时发生“No operations allowed after connection closed”报错
更新时间:
问题描述
在DMS控制台执行数据变更任务时,出现以下错误:
No operations allowed after connection closed
或出现以下错误:
Communications link failure during commit(). Transaction resolution unknown
问题原因
该错误是由于会话连接被关闭引起,主要有如下几种问题场景:
- 实例宕机
- 会话连接被人为结束(会话被kill)
- 会话连接超时,连接自动断开
解决方案
根据不同的问题场景,解决方法也不一致:
- 实例宕机:
- 若您是RDS实例:
- 此问题一般在10分钟内会自动修复,请您在10分钟后重新执行任务即可。
- 确认是否有运维操作导致主备实例发生变更,如果有发生变更,请参见自动或手动主备切换进行恢复。
- 如果超时10分钟问题没有修复,请获取工单号和对应的数据库信息提供给对应的DBA,如何查看DBA请参见如何在DMS控制台中查看数据库对应的DBA。
- 若您是自建数据库实例:
说明:本文以MySQL数据库为例进行介绍。
- 登录自建数据库实例所在机器,执行以下命令,查看MySQL进程。
ps -ef |grep mysql
- 如果不存在MySQL进程,您可以查看MySQL日志定位实例宕机的具体问题,MySQL日志一般
/var/log
目录下。 - 若问题未解决,请获取工单号和对应的数据库信息提供给对应的DBA,如何查看DBA请参见如何在DMS控制台中查看数据库对应的DBA。
- 登录自建数据库实例所在机器,执行以下命令,查看MySQL进程。
- 若您是RDS实例:
- 会话连接被人为结束:
您可以通过操作审计功能确认是否是人为的结束会话连接,如果是,重新执行任务即可。操作审计功能请参见操作审计。 - 连接超时,数据库自动断开连接:
常见的连接超时参数有wait_timeout,您可以确认是否是该值设置过小,导致会话连接超时。如果是wait_timeout值过小导致,可以适当增加该值,然后重新执行任务即可:- 若您是RDS实例,可以在RDS控制台的参数设置中查看并修改wait_timeout值。
- 若您是自建数据库实例:
- 执行以下SQL语句,查看wait_timeout值。
show variables like 'wait_timeout';
- 执行以下SQL语句,按照实际情况修改wait_timeout值。
set global wait_timeout=XXX;
- 执行以下SQL语句,查看wait_timeout值。
更多信息
在重试任务时,如果发生“Duplicate column name”报错,请参见DMS控制台中执行数据变更任务时提示“Duplicate column name 'XXXXX'”进行处理。
适用于
- 数据管理DMS
文档内容是否对您有帮助?